package com.hh.mybatisflex.service.impl;

import com.hh.common.core.domain.BaseEntity;
import com.hh.mybatisflex.service.IBaseService;
import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.row.Db;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import java.util.List;

/**
 * BaseService层处理
 *
 * @author hh
 * @date 2023-03-17
 */
public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseEntity> extends ServiceImpl<M , T> implements IBaseService<T> {

    /**
     * 先校验后修改
     *
     * @param entity 实体
     * @return 结果
     */
    @Override
    public boolean add(T entity) {
        checkSave(entity);
        return save(entity);
    }

    /**
     * 先校验后修改
     *
     * @param entity 实体
     * @return 结果
     */
    @Override
    public boolean edit(T entity)
    {
        checkEdit(entity);
        return updateById(entity);
    }

    /**
     * TODO min 批量更新性能提升不大，待跟进处理
     * 批量更新
     *
     * @param list
     */
    @Override
    public boolean batchUpdate(List<T> list) {
        return updateBatch(list);
    }

    /**
     * 新增前校验
     * @param entity
     */
    protected void checkSave(T entity)
    {
    }

    public void checkEdit(T entity)
    {
    }
}
